package com.haidechizi.util.retry.annotation;

import com.haidechizi.util.retry.exception.OptimisticException;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OptimisticLockRetry {

    Class<?> exception() default OptimisticException.class; // 重试的异常

    int value() default 3;  // 重试次数，默认3次（执行一次+重试两次）

    long retryInterval() default 0; // 默认直接重试，不延时

    TimeUnit timeunit() default TimeUnit.MILLISECONDS;  // 延时单位，默认毫秒
}
